Networks and distributed storage allow data and storage space to be shared between devices located anywhere a connection is available. These implementations may range from a single machine offering a shared drive over a home network to an enterprise-class cloud storage array with multiple copies of data distributed throughout the world. Larger implementations may incorporate Network Attached Storage (NAS) devices, Storage Area Network (SAN) devices, and other configurations of storage elements and controllers in order to provide data and manage its flow. Improvements in distributed storage have given rise to a cycle where applications demand increasing amounts of data delivered with high availability.
Host computing devices may include a multipath infrastructure to simplify interoperability with storage devices and provide high availability. At the host level, the approach taken by operating system vendors may vary. However, operating systems generally are consistent in that the generic aspects of multipath management, such as virtualizing storage devices, are handled by the operating system stack. Features more specific to particular storage solutions, such as I/O routing, failover, load balancing, and other vendor-specific behavior may be implemented by plug-ins to a multipath management framework. With respect to the WINDOWS operating system from Microsoft Corporation, the multipath management framework includes Multipath I/O (MPIO) and the plug-ins include device-specific modules (DSMs).
It is advantageous to update DSMs to implement bug-fixes and/or to add new features. However, MPIO is implemented in a manner such that DSMs that are currently managing storage devices may not be modified. Accordingly, it is conventional to reboot the host computing machine and/or to remove storage devices from the host computing machine in, order to update the DSMs of the host computing machine. Removing storage devices and/or rebooting the operating system to modify DSMs is inconvenient and an inefficient use of host computing resources.
It would be advantageous to modify DSMs without having to remove storage devices and/or reboot host computing machines. Therefore, to provide optimal multipath management, a need exists for systems and techniques that more efficiently update DSMs. In particular, systems and methods that allow DSMs to be updated without requiring that storage devices be disconnected or host computing machines to be rebooted would provide a valuable improvement over conventional storage systems. Thus, while existing storage systems have been generally adequate, the techniques described herein provide improved performance and efficiency.